'''上传网络图片的flask应用.

有2个postMethod.
第一个postMethod是'upload',上传图片.参数{}为:
files:[上传文件名]
domain:上传的域名
type:分类,空字符串则为'default'
tags:[标签表],可以为空
返回{'result':是否能开启上传线程的信息}

第二个postMethod是'search',按参数检索图片.参数{}为:
type:分类字符串,空字符串表示全部分类
tags:[标签表],检索的标签,满足任意一个标签,空表表示全部标签
days:多少天内上传的图片,0表示不限制

1个线程,WebPicUploadThread
'''

import sys
import os

from flask import render_template

from BaseApp import BaseApp
## 导入线程文件夹
sys.path.append(os.path.join(sys.path[0], r'threads'))
from WebPicUploadThread import WebPicUploadThread

class WebPicUpload(BaseApp):

  def __init__(self):
    BaseApp.__init__(self, 'WebPicUpload')
    self._threadDict['WebPicUploadThread'] = WebPicUploadThread()
    return
  
  ## 由于不是只有一个页面,重写一个默认页面  
  def getPage(self, page, flaskRequest):
    if (page == 'WebPicUpload.html'):
      domains = self._threadDict['WebPicUploadThread']._domains
      return render_template(f'{self._appname}/{page}', domains = domains)  
    return None
    
  def postMethod(self, methodName, flaskRequest):
    print('WebPicUpload.postMethod - {methodName}')
    if (methodName == 'upload'):
      data = {
        'files': flaskRequest.form['files'],
        'domain': flaskRequest.form['domain'],
        'type': flaskRequest.form['type'],
        'tags': flaskRequest.form['tags']
      }
      flag = self._threadDict['WebPicUploadThread'].start(data);
      if flag:
        return {'msg': f'上传文件线程开始'}
      else:
        return {'msg': f'上传文件线程失败,可能正在下载其他文件或域名不支持'}
    return